package br.uniceub.fsw.ativos.bo;

import br.uniceub.fsw.arquitetura.servico.exception.NegocioException;
import br.uniceub.fsw.ativos.dao.TecnologiaDAO;
import br.uniceub.fsw.ativos.vo.TecnologiaVO;

/**
 * Business Object da entidade Tecnologia. Essa classe é responsável por todos as
 * funcionalidades de negócio relacionadas à entidade.
 * 
 @author   Igor Benício de Mesquita 20166342/8
 *         Gabriel Levi Rolim Carvalho Pereira 2056308/9
 *         Luis Gustavo Loyola dos Santos Filho 2046429/0
 */
public class TecnologiaBO {

    TecnologiaDAO tecnologiaDAO = new TecnologiaDAO();
    
    /**
     * Valida se já existe um registro do Tecnologia no Banco de Dados como verificação para inserção.
     * 
     * @param tecnologia tecnologia a ser verificado.
     * @throws br.uniceub.fsw.arquitetura.servico.exception.RegraNegocioException caso o tecnologia 
     * informado não possua nome para a verificação ou não já exista um Tecnologia com o mesmo nome no banco de dados.
     */
    public void validarVOUnico(TecnologiaVO tecnologia) throws NegocioException {
        
        if(tecnologia.getNoTecnologia() == null || tecnologia.getNoTecnologia().isEmpty())
            throw new NegocioException("Nome da Tecnologia não foi informado");
        
        TecnologiaVO tecnologiaExemplo = new TecnologiaVO();
        tecnologiaExemplo.setNoTecnologia(tecnologia.getNoTecnologia());
        
        if(tecnologiaDAO.consultarPorExemplo(tecnologiaExemplo).isEmpty())
            throw new NegocioException("Já existe uma Tecnologia de nome " + tecnologia.getNoTecnologia() +
                " na base de dados");
    }
}
